package net.m510.autosurfer.smbcvisa;

import java.net.URI;
import java.util.logging.Logger;

import net.m510.autosurfer.common.DocumentGetProcess;

import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class SmbcVisaGoDetail extends DocumentGetProcess {
	private static final Logger log = Logger.getLogger(SmbcVisaGoDetail.class.getName());

	public SmbcVisaGoDetail() {
		this(null,null);
	}
	
	public SmbcVisaGoDetail(CloseableHttpClient client,HttpClientContext context) {
		super(client, context);
		super.log = log;
	}

	@Override
	protected URI getUri(Document doc) {
		// 口座の詳細ページへのURLを取得
		final String ANCHOR_GET_STR = "カードご利用状況"; 
		Elements elems = doc.getElementsContainingOwnText(ANCHOR_GET_STR);
		if ( elems.size() == 0 ) throw new IllegalStateException(ANCHOR_GET_STR+"が見つかりません");
		Element card_use_tbl = elems.first().parent().parent().parent().parent();
		log.fine("カード利用状況ソース "+ card_use_tbl);
		Element pay_amount_tbl = card_use_tbl.getElementsByTag("tr").get(1).getElementsByTag("table").first();
		log.fine("支払い金額ソース "+ pay_amount_tbl);
		Element pay_amount_row = pay_amount_tbl.getElementsByTag("tr").get(1);
		log.fine("支払い金額 行 ソース "+ pay_amount_row);
		// 請求未確定なら、取得しない
		if ( !pay_amount_row.html().contains("請求確定額") ) {
			throw new BillPendingException("請求が未確定です。明細書をダウンロードせず、中断します");
		}
		Element pay_amount_anchor = pay_amount_tbl.getElementsByTag("tr").get(1)
									.getElementsByTag("a").first();
		log.fine("当月支払分の明細へのアンカー "+pay_amount_anchor);
		String href = null;
		href = pay_amount_anchor.attr("href");
		URI uri = URI.create("https://www.smbc-card.com/"+href);
		return uri;
	}
//	@Override
//	public Document goDownloadPage(Document doc)
//			throws ClientProtocolException, IOException, UserProcessException {
//		final String host = "https://www.smbc-card.com/";
//		// 口座の詳細ページへのURLを取得
//		final String ANCHOR_GET_STR = "カードご利用状況"; 
//		Elements elems = doc.getElementsContainingOwnText(ANCHOR_GET_STR);
//		if ( elems.size() == 0 ) throw new IllegalStateException(ANCHOR_GET_STR+"が見つかりません");
//		Element card_use_tbl = elems.first().parent().parent().parent().parent();
////		log.fine("カード利用状況ソース "+ card_use_tbl);
//		Element pay_amount_tbl = card_use_tbl.getElementsByTag("tr").get(1)
//									.getElementsByTag("table").first();
//		log.fine("支払い金額ソース "+ pay_amount_tbl);
//		Element pay_amount_row = pay_amount_tbl.getElementsByTag("tr").get(1);
//		log.fine("支払い金額 行 ソース "+ pay_amount_row);
//		// 請求未確定なら、取得しない
//		if ( !pay_amount_row.html().contains("請求確定額") ) {
//			throw new BillPendingException("請求が未確定です。明細書をダウンロードせず、中断します");
//		}
//		Element pay_amount_anchor = pay_amount_tbl.getElementsByTag("tr").get(1)
//									.getElementsByTag("a").first();
//		log.fine("当月支払分の明細へのアンカー "+pay_amount_anchor);
//		String href = null;
//		href = pay_amount_anchor.attr("href");
//		final URI uri = HttpUtil.createURISafety(host,href);
//		DocumentGetExecuter executer = new DocumentGetExecuter(uri, client);
//		return executer.execute();
//	}

}
